package j2024.j202410;

import java.util.*;

public class j1015 {
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        long prime = in.nextLong();
        ArrayList<Integer> arr = new ArrayList<>();
        while(prime>0){
            arr.add((int)(prime%10));
            prime/=10;
        }
        //创建回文数
        long newp = 0;
        for (int i = arr.size()-1; i > 0; i--) {
            newp+=arr.get(i);
            newp*=10;
        }
        newp+=arr.get(0);
        newp*=10;
        for (int i = 1; i < arr.size(); i++) {
            newp+=arr.get(i);
            newp*=10;
        }
        newp/=10;
        //判断是否为素数
        boolean ret = isOrnot(newp);
        if(ret){
            System.out.println("prime");
        }else {
            System.out.println("noprime");
        }
    }
    public static boolean isOrnot(long newp){
        if(newp==2||newp==3){
            return true;
        }else {
            for (int i = 2,j=3; i < newp/2||j<newp/2; i+=2,j+=2) {
                if(i<newp/2 && newp%i==0){
                    return false;
                }
                if(j<newp/2 && newp%j==0){
                    return false;
                }
            }
            return true;
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] arr = new int[n][2];
        for (int i = 0; i < n; i++) {
            arr[i][0] = in.nextInt();arr[i][1] = in.nextInt();
        }
        Arrays.sort(arr,(v1,v2)->{
            return v1[0]-v2[0];
        });
        ArrayList<Integer> list = new ArrayList<>();
        list.add(arr[0][1]);
        for (int i = 1; i < n; i++) {
            if(list.get(list.size()-1)<=arr[i][1]){
                list.add(arr[i][1]);
            }else {
                int left = 0,right = list.size()-1;
                while(left<right){
                    int mid = (right+left)/2;
                    if(list.get(mid)<arr[i][1]){
                        left = mid+1;
                    }else {
                        right = mid;
                    }
                }
                list.set(left,arr[i][1]);
            }
        }
        System.out.println(list.size());
    }

    public String simplifyPath1(String path) {
        ArrayDeque<String> ret = new ArrayDeque<>();
        String[] tmp = path.split("/");
        for(String str:tmp){
            if(str.equals("..")){
                if(!ret.isEmpty()){
                    //ret.;
                }
            }else if(str.length()>0 && !str.equals(".")){
                ret.push(str);
            }
        }
        StringBuilder rett = new StringBuilder();
        if(ret.isEmpty()){
            rett.append("/");
            return rett.toString();
        }else {
            while(!ret.isEmpty()){
                rett.append("/");
            }
        }

        return rett.toString();
    }

    /**
     * 71. 简化路径
     * 给你一个字符串 path ，表
     * 示指向某一文件或目录的 Unix 风格 绝对路径 （以 '/' 开头），
     * 请你将其转化为 更加简洁的规范路径。
     *
     * 在 Unix 风格的文件系统中规则如下：
     *
     * 一个点 '.' 表示当前目录本身。
     * 此外，两个点 '..' 表示将目录切换到上一级（指向父目录）。
     * 任意多个连续的斜杠（即，'//' 或 '///'）都被视为单个斜杠 '/'。
     * 任何其他格式的点（例如，'...' 或 '....'）均被视为有效的文件/目录名称。
     * 返回的 简化路径 必须遵循下述格式：
     *
     * 始终以斜杠 '/' 开头。
     * 两个目录名之间必须只有一个斜杠 '/' 。
     * 最后一个目录名（如果存在）不能 以 '/' 结尾。
     * 此外，路径仅包含从根目录到目标文件或目录的路径上的目录
     * （即，不含 '.' 或 '..'）。
     * 返回简化后得到的 规范路径 。
     * @param path
     * @return
     */
    public String simplifyPath(String path) {
        String[] str = path.split("/");
        Deque<String> tmp = new ArrayDeque<>();
        for(String name:str){
            if(name.equals(".") || name.equals("")){
                continue;
            }
            if(name.equals("..")){
                if(!tmp.isEmpty()){
                    tmp.pollLast();
                }
            }else {
                if(name.length()>0){
                    tmp.offerLast(name);
                }
            }
        }
        if(tmp.isEmpty()){
            return "/";
        }
        StringBuilder ret = new StringBuilder();
        while(!tmp.isEmpty()){
            ret.append("/");
            ret.append(tmp.pollFirst());
        }
        return ret.toString();
    }
}
